home *** CD-ROM | disk | FTP | other *** search
/ Best Tools for JAVA / Best Tools for JAVA.iso / CONVERTR / RTF2HTML / SRC / RTF2HTML.TAR / rtftohtml_src / Libs / lib / mkrtf-ctrl.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-05  |  33.3 KB  |  984 lines

  1. /*
  2.  * mkrtf-ctrl.c -- generate rtf-ctrl file containing rtf control words
  3.  * and their major and minor numbers.
  4.  *
  5.  * The rtf-ctrl file has the following uses:
  6.  * - by making the table of control words external to translators, the
  7.  * data segment size on Macintosh applications shrinks considerably.
  8.  * This avoids problems with THINK C.  The scheme will still fail if
  9.  * the table ends up with 32K of string space, because then this program
  10.  * won't itself be compilable.  That's a ways off, I hope.
  11.  * - program sizes become smaller.
  12.  *
  13.  * 08 Apr 94    Paul DuBois    dubois@primate.wisc.edu
  14.  *
  15.  * 08 Apr 94
  16.  * - Created.
  17.  */
  18.  
  19. # include    <stdio.h>
  20.  
  21. # define    rtfInternal
  22. # include    "rtf.h"
  23. # undef        rtfInternal
  24.  
  25.  
  26. typedef struct RTFKey    RTFKey;
  27.  
  28. struct RTFKey
  29. {
  30.     int    major;    /* major number */
  31.     int    minor;    /* minor number */
  32.     char    *str;    /* symbol name */
  33.     int    junk;    /* symbol name hash value */
  34. };
  35.  
  36. /*
  37.  * A minor number of -1 means the token has no minor number
  38.  * (all valid minor numbers are >= 0).
  39.  */
  40.  
  41. static RTFKey    rtfKey[] =
  42. {
  43.     /*
  44.      * Special characters
  45.      */
  46.  
  47.     rtfSpecialChar,    rtfIIntVersion,        "vern",        0,
  48.     rtfSpecialChar,    rtfIEditTime,        "edmins",    0,
  49.     rtfSpecialChar,    rtfIYear,        "yr",        0,
  50.     rtfSpecialChar,    rtfIMonth,        "mo",        0,
  51.     rtfSpecialChar,    rtfIDay,        "dy",        0,
  52.     rtfSpecialChar,    rtfIHour,        "hr",        0,
  53.     rtfSpecialChar,    rtfIMinute,        "min",        0,
  54.     rtfSpecialChar,    rtfISecond,        "sec",        0,
  55.     rtfSpecialChar,    rtfINPages,        "nofpages",    0,
  56.     rtfSpecialChar,    rtfINWords,        "nofwords",    0,
  57.     rtfSpecialChar,    rtfINChars,        "nofchars",    0,
  58.     rtfSpecialChar,    rtfIIntID,        "id",        0,
  59.  
  60.     rtfSpecialChar,    rtfCurHeadDate,        "chdate",    0,
  61.     rtfSpecialChar,    rtfCurHeadDateLong,    "chdpl",    0,
  62.     rtfSpecialChar,    rtfCurHeadDateAbbrev,    "chdpa",    0,
  63.     rtfSpecialChar,    rtfCurHeadTime,        "chtime",    0,
  64.     rtfSpecialChar,    rtfCurHeadPage,        "chpgn",    0,
  65.     rtfSpecialChar,    rtfSectNum,        "sectnum",    0,
  66.     rtfSpecialChar,    rtfCurFNote,        "chftn",    0,
  67.     rtfSpecialChar,    rtfCurAnnotRef,        "chatn",    0,
  68.     rtfSpecialChar,    rtfFNoteSep,        "chftnsep",    0,
  69.     rtfSpecialChar,    rtfFNoteCont,        "chftnsepc",    0,
  70.     rtfSpecialChar,    rtfCell,        "cell",        0,
  71.     rtfSpecialChar,    rtfRow,            "row",        0,
  72.     rtfSpecialChar,    rtfPar,            "par",        0,
  73.     /* newline and carriage return are synonyms for */
  74.     /* \par when they are preceded by a \ character */
  75.     rtfSpecialChar,    rtfPar,            "\n",        0,
  76.     rtfSpecialChar,    rtfPar,            "\r",        0,
  77.     rtfSpecialChar,    rtfSect,        "sect",        0,
  78.     rtfSpecialChar,    rtfPage,        "page",        0,
  79.     rtfSpecialChar,    rtfColumn,        "column",    0,
  80.     rtfSpecialChar,    rtfLine,        "line",        0,
  81.     rtfSpecialChar,    rtfSoftPage,        "softpage",    0,
  82.     rtfSpecialChar,    rtfSoftColumn,        "softcol",    0,
  83.     rtfSpecialChar,    rtfSoftLine,        "softline",    0,
  84.     rtfSpecialChar,    rtfSoftLineHt,        "softlheight",    0,
  85.     rtfSpecialChar,    rtfTab,            "tab",        0,
  86.     rtfSpecialChar,    rtfEmDash,        "emdash",    0,
  87.     rtfSpecialChar,    rtfEnDash,        "endash",    0,
  88.     rtfSpecialChar,    rtfEmSpace,        "emspace",    0,
  89.     rtfSpecialChar,    rtfEnSpace,        "enspace",    0,
  90.     rtfSpecialChar,    rtfBullet,        "bullet",    0,
  91.     rtfSpecialChar,    rtfLQuote,        "lquote",    0,
  92.     rtfSpecialChar,    rtfRQuote,        "rquote",    0,
  93.     rtfSpecialChar,    rtfLDblQuote,        "ldblquote",    0,
  94.     rtfSpecialChar,    rtfRDblQuote,        "rdblquote",    0,
  95.     rtfSpecialChar,    rtfFormula,        "|",        0,
  96.     rtfSpecialChar,    rtfNoBrkSpace,        "~",        0,
  97.     rtfSpecialChar,    rtfNoReqHyphen,        "-",        0,
  98.     rtfSpecialChar,    rtfNoBrkHyphen,        "_",        0,
  99.     rtfSpecialChar,    rtfOptDest,        "*",        0,
  100.     rtfSpecialChar,    rtfLTRMark,        "ltrmark",    0,
  101.     rtfSpecialChar,    rtfRTLMark,        "rtlmark",    0,
  102.     rtfSpecialChar,    rtfNoWidthJoiner,    "zwj",        0,
  103.     rtfSpecialChar,    rtfNoWidthNonJoiner,    "zwnj",        0,
  104.     /* is this valid? */
  105.     rtfSpecialChar,    rtfCurHeadPict,        "chpict",    0,
  106.     rtfSpecialChar,    rtfIVersion,        "version",    0,
  107.  
  108.     /*
  109.      * Character formatting attributes
  110.      */
  111.  
  112.     rtfCharAttr,    rtfPlain,        "plain",    0,
  113.     rtfCharAttr,    rtfBold,        "b",        0,
  114.     rtfCharAttr,    rtfAllCaps,        "caps",        0,
  115.     rtfCharAttr,    rtfDeleted,        "deleted",    0,
  116.     rtfCharAttr,    rtfSubScript,        "dn",        0,
  117.     rtfCharAttr,    rtfSubScrShrink,    "sub",        0,
  118.     rtfCharAttr,    rtfNoSuperSub,        "nosupersub",    0,
  119.     rtfCharAttr,    rtfExpand,        "expnd",    0,
  120.     rtfCharAttr,    rtfExpandTwips,        "expndtw",    0,
  121.     rtfCharAttr,    rtfKerning,        "kerning",    0,
  122.     rtfCharAttr,    rtfFontNum,        "f",        0,
  123.     rtfCharAttr,    rtfFontSize,        "fs",        0,
  124.     rtfCharAttr,    rtfItalic,        "i",        0,
  125.     rtfCharAttr,    rtfOutline,        "outl",        0,
  126.     rtfCharAttr,    rtfRevised,        "revised",    0,
  127.     rtfCharAttr,    rtfRevAuthor,        "revauth",    0,
  128.     rtfCharAttr,    rtfRevDTTM,        "revdttm",    0,
  129.     rtfCharAttr,    rtfSmallCaps,        "scaps",    0,
  130.     rtfCharAttr,    rtfShadow,        "shad",        0,
  131.     rtfCharAttr,    rtfStrikeThru,        "strike",    0,
  132.     rtfCharAttr,    rtfUnderline,        "ul",        0,
  133.     rtfCharAttr,    rtfDotUnderline,    "uld",        0,
  134.     rtfCharAttr,    rtfDbUnderline,        "uldb",        0,
  135.     rtfCharAttr,    rtfNoUnderline,        "ulnone",    0,
  136.     rtfCharAttr,    rtfWordUnderline,    "ulw",        0,
  137.     rtfCharAttr,    rtfSuperScript,        "up",        0,
  138.     rtfCharAttr,    rtfSuperScrShrink,    "super",    0,
  139.     rtfCharAttr,    rtfInvisible,        "v",        0,
  140.     rtfCharAttr,    rtfForeColor,        "cf",        0,
  141.     rtfCharAttr,    rtfBackColor,        "cb",        0,
  142.     rtfCharAttr,    rtfRTLChar,        "rtlch",    0,
  143.     rtfCharAttr,    rtfLTRChar,        "ltrch",    0,
  144.     rtfCharAttr,    rtfCharStyleNum,    "cs",        0,
  145.     rtfCharAttr,    rtfCharCharSet,        "cchs",        0,
  146.     rtfCharAttr,    rtfLanguage,        "lang",        0,
  147.     /* this has disappeared from spec 1.2 */
  148.     rtfCharAttr,    rtfGray,        "gray",        0,
  149.  
  150.     /*
  151.      * Paragraph formatting attributes
  152.      */
  153.  
  154.     rtfParAttr,    rtfParDef,        "pard",        0,
  155.     rtfParAttr,    rtfStyleNum,        "s",        0,
  156.     rtfParAttr,    rtfHyphenate,        "hyphpar",    0,
  157.     rtfParAttr,    rtfInTable,        "intbl",    0,
  158.     rtfParAttr,    rtfKeep,        "keep",        0,
  159.     rtfParAttr,    rtfNoWidowControl,    "nowidctlpar",    0,
  160.     rtfParAttr,    rtfKeepNext,        "keepn",    0,
  161.     rtfParAttr,    rtfOutlineLevel,    "level",    0,
  162.     rtfParAttr,    rtfNoLineNum,        "noline",    0,
  163.     rtfParAttr,    rtfPBBefore,        "pagebb",    0,
  164.     rtfParAttr,    rtfSideBySide,        "sbys",        0,
  165.     rtfParAttr,    rtfQuadLeft,        "ql",        0,
  166.     rtfParAttr,    rtfQuadRight,        "qr",        0,
  167.     rtfParAttr,    rtfQuadJust,        "qj",        0,
  168.     rtfParAttr,    rtfQuadCenter,        "qc",        0,
  169.     rtfParAttr,    rtfFirstIndent,        "fi",        0,
  170.     rtfParAttr,    rtfLeftIndent,        "li",        0,
  171.     rtfParAttr,    rtfRightIndent,        "ri",        0,
  172.     rtfParAttr,    rtfSpaceBefore,        "sb",        0,
  173.     rtfParAttr,    rtfSpaceAfter,        "sa",        0,
  174.     rtfParAttr,    rtfSpaceBetween,    "sl",        0,
  175.     rtfParAttr,    rtfSpaceMultiply,    "slmult",    0,
  176.  
  177.     rtfParAttr,    rtfSubDocument,        "subdocument",    0,
  178.  
  179.     rtfParAttr,    rtfRTLPar,        "rtlpar",    0,
  180.     rtfParAttr,    rtfLTRPar,        "ltrpar",    0,
  181.  
  182.     rtfParAttr,    rtfTabPos,        "tx",        0,
  183.     /*
  184.      * FrameMaker writes \tql (to mean left-justified tab, apparently)
  185.      * although it's not in the spec.  It's also redundant, since lj
  186.      * tabs are the default.
  187.      */
  188.     rtfParAttr,    rtfTabLeft,        "tql",        0,
  189.     rtfParAttr,    rtfTabRight,        "tqr",        0,
  190.     rtfParAttr,    rtfTabCenter,        "tqc",        0,
  191.     rtfParAttr,    rtfTabDecimal,        "tqdec",    0,
  192.     rtfParAttr,    rtfTabBar,        "tb",        0,
  193.     rtfParAttr,    rtfLeaderDot,        "tldot",    0,
  194.     rtfParAttr,    rtfLeaderHyphen,    "tlhyph",    0,
  195.     rtfParAttr,    rtfLeaderUnder,        "tlul",        0,
  196.     rtfParAttr,    rtfLeaderThick,        "tlth",        0,
  197.     rtfParAttr,    rtfLeaderEqual,        "tleq",        0,
  198.  
  199.     rtfParAttr,    rtfParLevel,        "pnlvl",    0,
  200.     rtfParAttr,    rtfParBullet,        "pnlvlblt",    0,
  201.     rtfParAttr,    rtfParSimple,        "pnlvlbody",    0,
  202.     rtfParAttr,    rtfParNumCont,        "pnlvlcont",    0,
  203.     rtfParAttr,    rtfParNumOnce,        "pnnumonce",    0,
  204.     rtfParAttr,    rtfParNumAcross,    "pnacross",    0,
  205.     rtfParAttr,    rtfParHangIndent,    "pnhang",    0,
  206.     rtfParAttr,    rtfParNumRestart,    "pnrestart",    0,
  207.     rtfParAttr,    rtfParNumCardinal,    "pncard",    0,
  208.     rtfParAttr,    rtfParNumDecimal,    "pndec",    0,
  209.     rtfParAttr,    rtfParNumULetter,    "pnucltr",    0,
  210.     rtfParAttr,    rtfParNumURoman,    "pnucrm",    0,
  211.     rtfParAttr,    rtfParNumLLetter,    "pnlcltr",    0,
  212.     rtfParAttr,    rtfParNumLRoman,    "pnlcrm",    0,
  213.     rtfParAttr,    rtfParNumOrdinal,    "pnord",    0,
  214.     rtfParAttr,    rtfParNumOrdinalText,    "pnordt",    0,
  215.     rtfParAttr,    rtfParNumBold,        "pnb",        0,
  216.     rtfParAttr,    rtfParNumItalic,    "pni",        0,
  217.     rtfParAttr,    rtfParNumAllCaps,    "pncaps",    0,
  218.     rtfParAttr,    rtfParNumSmallCaps,    "pnscaps",    0,
  219.     rtfParAttr,    rtfParNumUnder,        "pnul",        0,
  220.     rtfParAttr,    rtfParNumDotUnder,    "pnuld",    0,
  221.     rtfParAttr,    rtfParNumDbUnder,    "pnuldb",    0,
  222.     rtfParAttr,    rtfParNumNoUnder,    "pnulnone",    0,
  223.     rtfParAttr,    rtfParNumWordUnder,    "pnulw",    0,
  224.     rtfParAttr,    rtfParNumStrikethru,    "pnstrike",    0,
  225.     rtfParAttr,    rtfParNumForeColor,    "pncf",        0,
  226.     rtfParAttr,    rtfParNumFont,        "pnf",        0,
  227.     rtfParAttr,    rtfParNumFontSize,    "pnfs",        0,
  228.     rtfParAttr,    rtfParNumIndent,    "pnindent",    0,
  229.     rtfParAttr,    rtfParNumSpacing,    "pnsp",        0,
  230.     rtfParAttr,    rtfParNumInclPrev,    "pnprev",    0,
  231.     rtfParAttr,    rtfParNumCenter,    "pnqc",        0,
  232.     rtfParAttr,    rtfParNumLeft,        "pnql",        0,
  233.     rtfParAttr,    rtfParNumRight,        "pnqr",        0,
  234.     rtfParAttr,    rtfParNumStartAt,    "pnstart",    0,
  235.  
  236.     rtfParAttr,    rtfBorderTop,        "brdrt",    0,
  237.     rtfParAttr,    rtfBorderBottom,    "brdrb",    0,
  238.     rtfParAttr,    rtfBorderLeft,        "brdrl",    0,
  239.     rtfParAttr,    rtfBorderRight,        "brdrr",    0,
  240.     rtfParAttr,    rtfBorderBetween,    "brdrbtw",    0,
  241.     rtfParAttr,    rtfBorderBar,        "brdrbar",    0,
  242.     rtfParAttr,    rtfBorderBox,        "box",        0,
  243.     rtfParAttr,    rtfBorderSingle,    "brdrs",    0,
  244.     rtfParAttr,    rtfBorderThick,        "brdrth",    0,
  245.     rtfParAttr,    rtfBorderShadow,    "brdrsh",    0,
  246.     rtfParAttr,    rtfBorderDouble,    "brdrdb",    0,
  247.     rtfParAttr,    rtfBorderDot,        "brdrdot",    0,
  248.     rtfParAttr,    rtfBorderDot,        "brdrdash",    0,
  249.     rtfParAttr,    rtfBorderHair,        "brdrhair",    0,
  250.     rtfParAttr,    rtfBorderWidth,        "brdrw",    0,
  251.     rtfParAttr,    rtfBorderColor,        "brdrcf",    0,
  252.     rtfParAttr,    rtfBorderSpace,        "brsp",        0,
  253.  
  254.     rtfParAttr,    rtfShading,        "shading",    0,
  255.     rtfParAttr,    rtfBgPatH,        "bghoriz",    0,
  256.     rtfParAttr,    rtfBgPatV,        "bgvert",    0,
  257.     rtfParAttr,    rtfFwdDiagBgPat,    "bgfdiag",    0,
  258.     rtfParAttr,    rtfBwdDiagBgPat,    "bgbdiag",    0,
  259.     rtfParAttr,    rtfHatchBgPat,        "bgcross",    0,
  260.     rtfParAttr,    rtfDiagHatchBgPat,    "bgdcross",    0,
  261.     rtfParAttr,    rtfDarkBgPatH,        "bgdkhoriz",    0,
  262.     rtfParAttr,    rtfDarkBgPatV,        "bgdkvert",    0,
  263.     rtfParAttr,    rtfFwdDarkBgPat,    "bgdkfdiag",    0,
  264.     rtfParAttr,    rtfBwdDarkBgPat,    "bgdkbdiag",    0,
  265.     rtfParAttr,    rtfDarkHatchBgPat,    "bgdkcross",    0,
  266.     rtfParAttr,    rtfDarkDiagHatchBgPat,    "bgdkdcross",    0,
  267.     rtfParAttr,    rtfBgPatLineColor,    "cfpat",    0,
  268.     rtfParAttr,    rtfBgPatColor,        "cbpat",    0,
  269.  
  270.     /*
  271.      * Section formatting attributes
  272.      */
  273.  
  274.     rtfSectAttr,    rtfSectDef,        "sectd",    0,
  275.     rtfSectAttr,    rtfENoteHere,        "endnhere",    0,
  276.     rtfSectAttr,    rtfPrtBinFirst,        "binfsxn",    0,
  277.     rtfSectAttr,    rtfPrtBin,        "binsxn",    0,
  278.     rtfSectAttr,    rtfSectStyleNum,    "ds",        0,
  279.  
  280.     rtfSectAttr,    rtfNoBreak,        "sbknone",    0,
  281.     rtfSectAttr,    rtfColBreak,        "sbkcol",    0,
  282.     rtfSectAttr,    rtfPageBreak,        "sbkpage",    0,
  283.     rtfSectAttr,    rtfEvenBreak,        "sbkeven",    0,
  284.     rtfSectAttr,    rtfOddBreak,        "sbkodd",    0,
  285.  
  286.     rtfSectAttr,    rtfColumns,        "cols",        0,
  287.     rtfSectAttr,    rtfColumnSpace,        "colsx",    0,
  288.     rtfSectAttr,    rtfColumnNumber,    "colno",    0,
  289.     rtfSectAttr,    rtfColumnSpRight,    "colsr",    0,
  290.     rtfSectAttr,    rtfColumnWidth,        "colw",        0,
  291.     rtfSectAttr,    rtfColumnLine,        "linebetcol",    0,
  292.  
  293.     rtfSectAttr,    rtfLineModulus,        "linemod",    0,
  294.     rtfSectAttr,    rtfLineDist,        "linex",    0,
  295.     rtfSectAttr,    rtfLineStarts,        "linestarts",    0,
  296.     rtfSectAttr,    rtfLineRestart,        "linerestart",    0,
  297.     rtfSectAttr,    rtfLineRestartPg,    "lineppage",    0,
  298.     rtfSectAttr,    rtfLineCont,        "linecont",    0,
  299.  
  300.     rtfSectAttr,    rtfSectPageWid,        "pgwsxn",    0,
  301.     rtfSectAttr,    rtfSectPageHt,        "pghsxn",    0,
  302.     rtfSectAttr,    rtfSectMarginLeft,    "marglsxn",    0,
  303.     rtfSectAttr,    rtfSectMarginRight,    "margrsxn",    0,
  304.     rtfSectAttr,    rtfSectMarginTop,    "margtsxn",    0,
  305.     rtfSectAttr,    rtfSectMarginBottom,    "margbsxn",    0,
  306.     rtfSectAttr,    rtfSectMarginGutter,    "guttersxn",    0,
  307.     rtfSectAttr,    rtfSectLandscape,    "lndscpsxn",    0,
  308.     rtfSectAttr,    rtfTitleSpecial,    "titlepg",    0,
  309.     rtfSectAttr,    rtfHeaderY,        "headery",    0,
  310.     rtfSectAttr,    rtfFooterY,        "footery",    0,
  311.  
  312.     rtfSectAttr,    rtfPageStarts,        "pgnstarts",    0,
  313.     rtfSectAttr,    rtfPageCont,        "pgncont",    0,
  314.     rtfSectAttr,    rtfPageRestart,        "pgnrestart",    0,
  315.     rtfSectAttr,    rtfPageNumRight,    "pgnx",        0,
  316.     rtfSectAttr,    rtfPageNumTop,        "pgny",        0,
  317.     rtfSectAttr,    rtfPageDecimal,        "pgndec",    0,
  318.     rtfSectAttr,    rtfPageURoman,        "pgnucrm",    0,
  319.     rtfSectAttr,    rtfPageLRoman,        "pgnlcrm",    0,
  320.     rtfSectAttr,    rtfPageULetter,        "pgnucltr",    0,
  321.     rtfSectAttr,    rtfPageLLetter,        "pgnlcltr",    0,
  322.     rtfSectAttr,    rtfPageNumHyphSep,    "pgnhnsh",    0,
  323.     rtfSectAttr,    rtfPageNumSpaceSep,    "pgnhnsp",    0,
  324.     rtfSectAttr,    rtfPageNumColonSep,    "pgnhnsc",    0,
  325.     rtfSectAttr,    rtfPageNumEmdashSep,    "pgnhnsm",    0,
  326.     rtfSectAttr,    rtfPageNumEndashSep,    "pgnhnsn",    0,
  327.  
  328.     rtfSectAttr,    rtfTopVAlign,        "vertalt",    0,
  329.     /* misspelled as "vertal" in specification 1.0 */
  330.     rtfSectAttr,    rtfBottomVAlign,    "vertalb",    0,
  331.     rtfSectAttr,    rtfCenterVAlign,    "vertalc",    0,
  332.     rtfSectAttr,    rtfJustVAlign,        "vertalj",    0,
  333.  
  334.     rtfSectAttr,    rtfRTLSect,        "rtlsect",    0,
  335.     rtfSectAttr,    rtfLTRSect,        "ltrsect",    0,
  336.     rtfSectAttr,    rtfPageNumLevel,    "pgnhn",    0,
  337.     rtfSectAttr,    rtfSectUnlocked,    "sectunlocked",    0,
  338.  
  339.     /* I've seen these in an old spec, but not in real files... */
  340.     /*rtfSectAttr,    rtfNoBreak,        "nobreak",    0,*/
  341.     /*rtfSectAttr,    rtfColBreak,        "colbreak",    0,*/
  342.     /*rtfSectAttr,    rtfPageBreak,        "pagebreak",    0,*/
  343.     /*rtfSectAttr,    rtfEvenBreak,        "evenbreak",    0,*/
  344.     /*rtfSectAttr,    rtfOddBreak,        "oddbreak",    0,*/
  345.  
  346.     /*
  347.      * Document formatting attributes
  348.      */
  349.  
  350.     rtfDocAttr,    rtfDefTab,        "deftab",    0,
  351.     rtfDocAttr,    rtfHyphHotZone,        "hyphhotz",    0,
  352.     rtfDocAttr,    rtfHyphConsecLines,    "hyphconsec",    0,
  353.     rtfDocAttr,    rtfHyphCaps,        "hyphcaps",    0,
  354.     rtfDocAttr,    rtfHyphAuto,        "hyphauto",    0,
  355.     rtfDocAttr,    rtfLineStart,        "linestart",    0,
  356.     rtfDocAttr,    rtfFracWidth,        "fracwidth",    0,
  357.     /* \makeback was given in old version of spec, it's now */
  358.     /* listed as \makebackup */
  359.     rtfDocAttr,    rtfMakeBackup,        "makeback",    0,
  360.     rtfDocAttr,    rtfMakeBackup,        "makebackup",    0,
  361.     rtfDocAttr,    rtfRTFDefault,        "defformat",    0,
  362.     rtfDocAttr,    rtfPSOverlay,        "psover",    0,
  363.     rtfDocAttr,    rtfDocTemplate,        "doctemp",    0,
  364.     rtfDocAttr,    rtfDefLanguage,        "deflang",    0,
  365.  
  366.     rtfDocAttr,    rtfFENoteType,        "fet",        0,
  367.     rtfDocAttr,    rtfFNoteEndSect,    "endnotes",    0,
  368.     rtfDocAttr,    rtfFNoteEndDoc,        "enddoc",    0,
  369.     rtfDocAttr,    rtfFNoteText,        "ftntj",    0,
  370.     rtfDocAttr,    rtfFNoteBottom,        "ftnbj",    0,
  371.     rtfDocAttr,    rtfENoteEndSect,    "aendnotes",    0,
  372.     rtfDocAttr,    rtfENoteEndDoc,        "aenddoc",    0,
  373.     rtfDocAttr,    rtfENoteText,        "aftntj",    0,
  374.     rtfDocAttr,    rtfENoteBottom,        "aftnbj",    0,
  375.     rtfDocAttr,    rtfFNoteStart,        "ftnstart",    0,
  376.     rtfDocAttr,    rtfENoteStart,        "aftnstart",    0,
  377.     rtfDocAttr,    rtfFNoteRestartPage,    "ftnrstpg",    0,
  378.     rtfDocAttr,    rtfFNoteRestart,    "ftnrestart",    0,
  379.     rtfDocAttr,    rtfFNoteRestartCont,    "ftnrstcont",    0,
  380.     rtfDocAttr,    rtfENoteRestart,    "aftnrestart",    0,
  381.     rtfDocAttr,    rtfENoteRestartCont,    "aftnrstcont",    0,
  382.     rtfDocAttr,    rtfFNoteNumArabic,    "ftnnar",    0,
  383.     rtfDocAttr,    rtfFNoteNumLLetter,    "ftnnalc",    0,
  384.     rtfDocAttr,    rtfFNoteNumULetter,    "ftnnauc",    0,
  385.     rtfDocAttr,    rtfFNoteNumLRoman,    "ftnnrlc",    0,
  386.     rtfDocAttr,    rtfFNoteNumURoman,    "ftnnruc",    0,
  387.     rtfDocAttr,    rtfFNoteNumChicago,    "ftnnchi",    0,
  388.     rtfDocAttr,    rtfENoteNumArabic,    "aftnnar",    0,
  389.     rtfDocAttr,    rtfENoteNumLLetter,    "aftnnalc",    0,
  390.     rtfDocAttr,    rtfENoteNumULetter,    "aftnnauc",    0,
  391.     rtfDocAttr,    rtfENoteNumLRoman,    "aftnnrlc",    0,
  392.     rtfDocAttr,    rtfENoteNumURoman,    "aftnnruc",    0,
  393.     rtfDocAttr,    rtfENoteNumChicago,    "aftnnchi",    0,
  394.  
  395.     rtfDocAttr,    rtfPaperWidth,        "paperw",    0,
  396.     rtfDocAttr,    rtfPaperHeight,        "paperh",    0,
  397.     rtfDocAttr,    rtfPaperSize,        "psz",        0,
  398.     rtfDocAttr,    rtfLeftMargin,        "margl",    0,
  399.     rtfDocAttr,    rtfRightMargin,        "margr",    0,
  400.     rtfDocAttr,    rtfTopMargin,        "margt",    0,
  401.     rtfDocAttr,    rtfBottomMargin,    "margb",    0,
  402.     rtfDocAttr,    rtfFacingPage,        "facingp",    0,
  403.     rtfDocAttr,    rtfGutterWid,        "gutter",    0,
  404.     rtfDocAttr,    rtfMirrorMargin,    "margmirror",    0,
  405.     rtfDocAttr,    rtfLandscape,        "landscape",    0,
  406.     rtfDocAttr,    rtfPageStart,        "pgnstart",    0,
  407.     rtfDocAttr,    rtfWidowCtrl,        "widowctrl",    0,
  408.  
  409.     rtfDocAttr,    rtfLinkStyles,        "linkstyles",    0,
  410.  
  411.     rtfDocAttr,    rtfNoAutoTabIndent,    "notabind",    0,
  412.     rtfDocAttr,    rtfWrapSpaces,        "wraptrsp",    0,
  413.     rtfDocAttr,    rtfPrintColorsBlack,    "prcolbl",    0,
  414.     rtfDocAttr,    rtfNoExtraSpaceRL,    "noextrasprl",    0,
  415.     rtfDocAttr,    rtfNoColumnBalance,    "nocolbal",    0,
  416.     rtfDocAttr,    rtfCvtMailMergeQuote,    "cvmme",    0,
  417.     rtfDocAttr,    rtfSuppressTopSpace,    "sprstsp",    0,
  418.     rtfDocAttr,    rtfSuppressPreParSpace,    "sprsspbf",    0,
  419.     rtfDocAttr,    rtfCombineTblBorders,    "otblrul",    0,
  420.     rtfDocAttr,    rtfTranspMetafiles,    "transmf",    0,
  421.     rtfDocAttr,    rtfSwapBorders,        "swpbdr",    0,
  422.     rtfDocAttr,    rtfShowHardBreaks,    "brkfrm",    0,
  423.  
  424.     rtfDocAttr,    rtfFormProtected,    "formprot",    0,
  425.     rtfDocAttr,    rtfAllProtected,    "allprot",    0,
  426.     rtfDocAttr,    rtfFormShading,        "formshade",    0,
  427.     rtfDocAttr,    rtfFormDisplay,        "formdisp",    0,
  428.     rtfDocAttr,    rtfPrintData,        "printdata",    0,
  429.  
  430.     rtfDocAttr,    rtfRevProtected,    "revprot",    0,
  431.     rtfDocAttr,    rtfRevisions,        "revisions",    0,
  432.     rtfDocAttr,    rtfRevDisplay,        "revprop",    0,
  433.     rtfDocAttr,    rtfRevBar,        "revbar",    0,
  434.  
  435.     rtfDocAttr,    rtfAnnotProtected,    "annotprot",    0,
  436.  
  437.     rtfDocAttr,    rtfRTLDoc,        "rtldoc",    0,
  438.     rtfDocAttr,    rtfLTRDoc,        "ltrdoc",    0,
  439.  
  440.     /*
  441.      * Style attributes
  442.      */
  443.  
  444.     rtfStyleAttr,    rtfAdditive,        "additive",    0,
  445.     rtfStyleAttr,    rtfBasedOn,        "sbasedon",    0,
  446.     rtfStyleAttr,    rtfNext,        "snext",    0,
  447.  
  448.     /*
  449.      * Picture attributes
  450.      */
  451.  
  452.     rtfPictAttr,    rtfMacQD,        "macpict",    0,
  453.     rtfPictAttr,    rtfPMMetafile,        "pmmetafile",    0,
  454.     rtfPictAttr,    rtfWinMetafile,        "wmetafile",    0,
  455.     rtfPictAttr,    rtfDevIndBitmap,    "dibitmap",    0,
  456.     rtfPictAttr,    rtfWinBitmap,        "wbitmap",    0,
  457.     rtfPictAttr,    rtfPixelBits,        "wbmbitspixel",    0,
  458.     rtfPictAttr,    rtfBitmapPlanes,    "wbmplanes",    0,
  459.     rtfPictAttr,    rtfBitmapWid,        "wbmwidthbytes", 0,
  460.  
  461.     rtfPictAttr,    rtfPicWid,        "picw",        0,
  462.     rtfPictAttr,    rtfPicHt,        "pich",        0,
  463.     rtfPictAttr,    rtfPicGoalWid,        "picwgoal",    0,
  464.     rtfPictAttr,    rtfPicGoalHt,        "pichgoal",    0,
  465.     /* these two aren't in the spec, but some writers emit them */
  466.     rtfPictAttr,    rtfPicGoalWid,        "picwGoal",    0,
  467.     rtfPictAttr,    rtfPicGoalHt,        "pichGoal",    0,
  468.     rtfPictAttr,    rtfPicScaleX,        "picscalex",    0,
  469.     rtfPictAttr,    rtfPicScaleY,        "picscaley",    0,
  470.     rtfPictAttr,    rtfPicScaled,        "picscaled",    0,
  471.     rtfPictAttr,    rtfPicCropTop,        "piccropt",    0,
  472.     rtfPictAttr,    rtfPicCropBottom,    "piccropb",    0,
  473.     rtfPictAttr,    rtfPicCropLeft,        "piccropl",    0,
  474.     rtfPictAttr,    rtfPicCropRight,    "piccropr",    0,
  475.  
  476.     rtfPictAttr,    rtfPicMFHasBitmap,    "picbmp",    0,
  477.     rtfPictAttr,    rtfPicMFBitsPerPixel,    "picbpp",    0,
  478.  
  479.     rtfPictAttr,    rtfPicBinary,        "bin",        0,
  480.  
  481.     /*
  482.      * NeXT graphic attributes
  483.      */
  484.  
  485.     rtfNeXTGrAttr,    rtfNeXTGWidth,        "width",    0,
  486.     rtfNeXTGrAttr,    rtfNeXTGHeight,        "height",    0,
  487.  
  488.     /*
  489.      * Destinations
  490.      */
  491.  
  492.     rtfDestination,    rtfFontTbl,        "fonttbl",    0,
  493.     rtfDestination,    rtfFontAltName,        "falt",        0,
  494.     rtfDestination,    rtfEmbeddedFont,    "fonteb",    0,
  495.     rtfDestination,    rtfFontFile,        "fontfile",    0,
  496.     rtfDestination,    rtfFileTbl,        "filetbl",    0,
  497.     rtfDestination,    rtfFileInfo,        "file",        0,
  498.     rtfDestination,    rtfColorTbl,        "colortbl",    0,
  499.     rtfDestination,    rtfStyleSheet,        "stylesheet",    0,
  500.     rtfDestination,    rtfKeyCode,        "keycode",    0,
  501.     rtfDestination,    rtfRevisionTbl,        "revtbl",    0,
  502.     rtfDestination,    rtfInfo,        "info",        0,
  503.     rtfDestination,    rtfITitle,        "title",    0,
  504.     rtfDestination,    rtfISubject,        "subject",    0,
  505.     rtfDestination,    rtfIAuthor,        "author",    0,
  506.     rtfDestination,    rtfIOperator,        "operator",    0,
  507.     rtfDestination,    rtfIKeywords,        "keywords",    0,
  508.     rtfDestination,    rtfIComment,        "comment",    0,
  509.     rtfDestination,    rtfIDoccomm,        "doccomm",    0,
  510.     rtfDestination,    rtfIVerscomm,        "verscomm",    0,
  511.     rtfDestination,    rtfNextFile,        "nextfile",    0,
  512.     rtfDestination,    rtfTemplate,        "template",    0,
  513.     rtfDestination,    rtfFNSep,        "ftnsep",    0,
  514.     rtfDestination,    rtfFNContSep,        "ftnsepc",    0,
  515.     rtfDestination,    rtfFNContNotice,    "ftncn",    0,
  516.     rtfDestination,    rtfENSep,        "aftnsep",    0,
  517.     rtfDestination,    rtfENContSep,        "aftnsepc",    0,
  518.     rtfDestination,    rtfENContNotice,    "aftncn",    0,
  519.     rtfDestination,    rtfParNumLevelStyle,    "pnseclvl",    0,
  520.     rtfDestination,    rtfHeader,        "header",    0,
  521.     rtfDestination,    rtfFooter,        "footer",    0,
  522.     rtfDestination,    rtfHeaderLeft,        "headerl",    0,
  523.     rtfDestination,    rtfHeaderRight,        "headerr",    0,
  524.     rtfDestination,    rtfHeaderFirst,        "headerf",    0,
  525.     rtfDestination,    rtfFooterLeft,        "footerl",    0,
  526.     rtfDestination,    rtfFooterRight,        "footerr",    0,
  527.     rtfDestination,    rtfFooterFirst,        "footerf",    0,
  528.     rtfDestination,    rtfParNumText,        "pntext",    0,
  529.     rtfDestination,    rtfParNumbering,    "pn",        0,
  530.     rtfDestination,    rtfParNumTextAfter,    "pntxta",    0,
  531.     rtfDestination,    rtfParNumTextBefore,    "pntxtb",    0,
  532.     rtfDestination,    rtfBookmarkStart,    "bkmkstart",    0,
  533.     rtfDestination,    rtfBookmarkEnd,        "bkmkend",    0,
  534.     rtfDestination,    rtfPict,        "pict",        0,
  535.     rtfDestination,    rtfObject,        "object",    0,
  536.     rtfDestination,    rtfObjClass,        "objclass",    0,
  537.     rtfDestination,    rtfObjName,        "objname",    0,
  538.     rtfDestination,    rtfObjTime,        "objtime",    0,
  539.     rtfDestination,    rtfObjData,        "objdata",    0,
  540.     rtfDestination,    rtfObjAlias,        "objalias",    0,
  541.     rtfDestination,    rtfObjSection,        "objsect",    0,
  542.     /* objitem and objtopic aren't documented in the spec! */
  543.     rtfDestination,    rtfObjItem,        "objitem",    0,
  544.     rtfDestination,    rtfObjTopic,        "objtopic",    0,
  545.     rtfDestination,    rtfObjResult,        "result",    0,
  546.     rtfDestination,    rtfDrawObject,        "do",        0,
  547.     rtfDestination,    rtfFootnote,        "footnote",    0,
  548.     rtfDestination,    rtfAnnotRefStart,    "atrfstart",    0,
  549.     rtfDestination,    rtfAnnotRefEnd,        "atrfend",    0,
  550.     rtfDestination,    rtfAnnotID,        "atnid",    0,
  551.     rtfDestination,    rtfAnnotAuthor,        "atnauthor",    0,
  552.     rtfDestination,    rtfAnnotation,        "annotation",    0,
  553.     rtfDestination,    rtfAnnotRef,        "atnref",    0,
  554.     rtfDestination,    rtfAnnotTime,        "atntime",    0,
  555.     rtfDestination,    rtfAnnotIcon,        "atnicn",    0,
  556.     rtfDestination,    rtfField,        "field",    0,
  557.     rtfDestination,    rtfFieldInst,        "fldinst",    0,
  558.     rtfDestination,    rtfFieldResult,        "fldrslt",    0,
  559.     rtfDestination,    rtfDataField,        "datafield",    0,
  560.     rtfDestination,    rtfIndex,        "xe",        0,
  561.     rtfDestination,    rtfIndexText,        "txe",        0,
  562.     rtfDestination,    rtfIndexRange,        "rxe",        0,
  563.     rtfDestination,    rtfTOC,            "tc",        0,
  564.     rtfDestination,    rtfNeXTGraphic,        "NeXTGraphic",    0,
  565.     rtfDestination,    rtfNeXTHelpM,        "NeXTHelpMarker",    0,
  566.     rtfDestination,    rtfNeXTHelpL,        "NeXTHelpLink",    0,
  567.     rtfDestination,    rtfIBackupTime,        "buptim",    0,
  568.     rtfDestination,    rtfICreateTime,        "creatim",    0,
  569.     rtfDestination,    rtfIPrintTime,        "printim",    0,
  570.     rtfDestination,    rtfIRevisionTime,    "revtim",    0,
  571.     rtfDestination,    rtfDrawTextBoxText,    "dptxbxtext",    0,
  572.     rtfDestination,    rtfFontEmbedded,    "fontemb",    0,
  573.     rtfDestination,    rtfTOCN,            "tcn",        0,
  574.  
  575.     /*
  576.      * Font families
  577.      */
  578.  
  579.     rtfFontFamily,    rtfFFNil,        "fnil",        0,
  580.     rtfFontFamily,    rtfFFRoman,        "froman",    0,
  581.     rtfFontFamily,    rtfFFSwiss,        "fswiss",    0,
  582.     rtfFontFamily,    rtfFFModern,        "fmodern",    0,
  583.     rtfFontFamily,    rtfFFScript,        "fscript",    0,
  584.     rtfFontFamily,    rtfFFDecor,        "fdecor",    0,
  585.     rtfFontFamily,    rtfFFTech,        "ftech",    0,
  586.     rtfFontFamily,    rtfFFBidirectional,    "fbidi",    0,
  587.  
  588.     /*
  589.      * Font attributes
  590.      */
  591.  
  592.     rtfFontAttr,    rtfFontCharSet,        "fcharset",    0,
  593.     rtfFontAttr,    rtfFontPitch,        "fprq",        0,
  594.     rtfFontAttr,    rtfFontCodePage,    "cpg",        0,
  595.     rtfFontAttr,    rtfFTypeNil,        "ftnil",    0,
  596.     rtfFontAttr,    rtfFTypeTrueType,    "fttruetype",    0,
  597.  
  598.     /*
  599.      * File table attributes
  600.      */
  601.  
  602.     rtfFileAttr,    rtfFileNum,        "fid",        0,
  603.     rtfFileAttr,    rtfFileRelPath,        "frelative",    0,
  604.     rtfFileAttr,    rtfFileOSNum,        "fosnum",    0,
  605.  
  606.     /*
  607.      * File sources
  608.      */
  609.  
  610.     rtfFileSource,    rtfSrcMacintosh,    "fvalidmac",    0,
  611.     rtfFileSource,    rtfSrcDOS,        "fvaliddos",    0,
  612.     rtfFileSource,    rtfSrcNTFS,        "fvalidntfs",    0,
  613.     rtfFileSource,    rtfSrcHPFS,        "fvalidhpfs",    0,
  614.     rtfFileSource,    rtfSrcNetwork,        "fnetwork",    0,
  615.  
  616.     /*
  617.      * Color names
  618.      */
  619.  
  620.     rtfColorName,    rtfRed,            "red",        0,
  621.     rtfColorName,    rtfGreen,        "green",    0,
  622.     rtfColorName,    rtfBlue,        "blue",        0,
  623.  
  624.     /*
  625.      * Charset names
  626.      */
  627.  
  628.     rtfCharSet,    rtfMacCharSet,        "mac",        0,
  629.     rtfCharSet,    rtfAnsiCharSet,        "ansi",        0,
  630.     rtfCharSet,    rtfPcCharSet,        "pc",        0,
  631.     rtfCharSet,    rtfPcaCharSet,        "pca",        0,
  632.  
  633.     /*
  634.      * Table attributes
  635.      */
  636.  
  637.     rtfTblAttr,    rtfRowDef,        "trowd",    0,
  638.     rtfTblAttr,    rtfRowGapH,        "trgaph",    0,
  639.     rtfTblAttr,    rtfCellPos,        "cellx",    0,
  640.     rtfTblAttr,    rtfMergeRngFirst,    "clmgf",    0,
  641.     rtfTblAttr,    rtfMergePrevious,    "clmrg",    0,
  642.  
  643.     rtfTblAttr,    rtfRowLeft,        "trql",        0,
  644.     rtfTblAttr,    rtfRowRight,        "trqr",        0,
  645.     rtfTblAttr,    rtfRowCenter,        "trqc",        0,
  646.     rtfTblAttr,    rtfRowLeftEdge,        "trleft",    0,
  647.     rtfTblAttr,    rtfRowHt,        "trrh",        0,
  648.     rtfTblAttr,    rtfRowHeader,        "trhdr",    0,
  649.     rtfTblAttr,    rtfRowKeep,        "trkeep",    0,
  650.  
  651.     rtfTblAttr,    rtfRTLRow,        "rtlrow",    0,
  652.     rtfTblAttr,    rtfLTRRow,        "ltrrow",    0,
  653.  
  654.     rtfTblAttr,    rtfRowBordTop,        "trbrdrt",    0,
  655.     rtfTblAttr,    rtfRowBordLeft,        "trbrdrl",    0,
  656.     rtfTblAttr,    rtfRowBordBottom,    "trbrdrb",    0,
  657.     rtfTblAttr,    rtfRowBordRight,    "trbrdrr",    0,
  658.     rtfTblAttr,    rtfRowBordHoriz,    "trbrdrh",    0,
  659.     rtfTblAttr,    rtfRowBordVert,        "trbrdrv",    0,
  660.  
  661.     rtfTblAttr,    rtfCellBordBottom,    "clbrdrb",    0,
  662.     rtfTblAttr,    rtfCellBordTop,        "clbrdrt",    0,
  663.     rtfTblAttr,    rtfCellBordLeft,    "clbrdrl",    0,
  664.     rtfTblAttr,    rtfCellBordRight,    "clbrdrr",    0,
  665.  
  666.     rtfTblAttr,    rtfCellShading,        "clshdng",    0,
  667.     rtfTblAttr,    rtfCellBgPatH,        "clbghoriz",    0,
  668.     rtfTblAttr,    rtfCellBgPatV,        "clbgvert",    0,
  669.     rtfTblAttr,    rtfCellFwdDiagBgPat,    "clbgfdiag",    0,
  670.     rtfTblAttr,    rtfCellBwdDiagBgPat,    "clbgbdiag",    0,
  671.     rtfTblAttr,    rtfCellHatchBgPat,    "clbgcross",    0,
  672.     rtfTblAttr,    rtfCellDiagHatchBgPat,    "clbgdcross",    0,
  673.     /*
  674.      * The spec lists "clbgdkhor", but the corresponding non-cell
  675.      * control is "bgdkhoriz".  At any rate Macintosh Word seems
  676.      * to accept both "clbgdkhor" and "clbgdkhoriz".
  677.      */
  678.     rtfTblAttr,    rtfCellDarkBgPatH,    "clbgdkhoriz",    0,
  679.     rtfTblAttr,    rtfCellDarkBgPatH,    "clbgdkhor",    0,
  680.     rtfTblAttr,    rtfCellDarkBgPatV,    "clbgdkvert",    0,
  681.     rtfTblAttr,    rtfCellFwdDarkBgPat,    "clbgdkfdiag",    0,
  682.     rtfTblAttr,    rtfCellBwdDarkBgPat,    "clbgdkbdiag",    0,
  683.     rtfTblAttr,    rtfCellDarkHatchBgPat,    "clbgdkcross",    0,
  684.     rtfTblAttr,    rtfCellDarkDiagHatchBgPat, "clbgdkdcross",    0,
  685.     rtfTblAttr,    rtfCellBgPatLineColor, "clcfpat",    0,
  686.     rtfTblAttr,    rtfCellBgPatColor,    "clcbpat",    0,
  687.  
  688.     /*
  689.      * Field attributes
  690.      */
  691.  
  692.     rtfFieldAttr,    rtfFieldDirty,        "flddirty",    0,
  693.     rtfFieldAttr,    rtfFieldEdited,        "fldedit",    0,
  694.     rtfFieldAttr,    rtfFieldLocked,        "fldlock",    0,
  695.     rtfFieldAttr,    rtfFieldPrivate,    "fldpriv",    0,
  696.     rtfFieldAttr,    rtfFieldAlt,        "fldalt",    0,
  697.  
  698.     /*
  699.      * Positioning attributes
  700.      */
  701.  
  702.     rtfPosAttr,    rtfAbsWid,        "absw",        0,
  703.     rtfPosAttr,    rtfAbsHt,        "absh",        0,
  704.  
  705.     rtfPosAttr,    rtfRPosMargH,        "phmrg",    0,
  706.     rtfPosAttr,    rtfRPosPageH,        "phpg",        0,
  707.     rtfPosAttr,    rtfRPosColH,        "phcol",    0,
  708.     rtfPosAttr,    rtfPosX,        "posx",        0,
  709.     rtfPosAttr,    rtfPosNegX,        "posnegx",    0,
  710.     rtfPosAttr,    rtfPosXCenter,        "posxc",    0,
  711.     rtfPosAttr,    rtfPosXInside,        "posxi",    0,
  712.     rtfPosAttr,    rtfPosXOutSide,        "posxo",    0,
  713.     rtfPosAttr,    rtfPosXRight,        "posxr",    0,
  714.     rtfPosAttr,    rtfPosXLeft,        "posxl",    0,
  715.  
  716.     rtfPosAttr,    rtfRPosMargV,        "pvmrg",    0,
  717.     rtfPosAttr,    rtfRPosPageV,        "pvpg",        0,
  718.     rtfPosAttr,    rtfRPosParaV,        "pvpara",    0,
  719.     rtfPosAttr,    rtfPosY,        "posy",        0,
  720.     rtfPosAttr,    rtfPosNegY,        "posnegy",    0,
  721.     rtfPosAttr,    rtfPosYInline,        "posyil",    0,
  722.     rtfPosAttr,    rtfPosYTop,        "posyt",    0,
  723.     rtfPosAttr,    rtfPosYCenter,        "posyc",    0,
  724.     rtfPosAttr,    rtfPosYBottom,        "posyb",    0,
  725.  
  726.     rtfPosAttr,    rtfNoWrap,        "nowrap",    0,
  727.     rtfPosAttr,    rtfDistFromTextAll,    "dxfrtext",    0,
  728.     rtfPosAttr,    rtfDistFromTextX,    "dfrmtxtx",    0,
  729.     rtfPosAttr,    rtfDistFromTextY,    "dfrmtxty",    0,
  730.     /* \dyfrtext no longer exists in spec 1.2, apparently */
  731.     /* replaced by \dfrmtextx and \dfrmtexty. */
  732.     rtfPosAttr,    rtfTextDistY,        "dyfrtext",    0,
  733.  
  734.     rtfPosAttr,    rtfDropCapLines,    "dropcapli",    0,
  735.     rtfPosAttr,    rtfDropCapType,        "dropcapt",    0,
  736.  
  737.     /*
  738.      * Object controls
  739.      */
  740.  
  741.     rtfObjAttr,    rtfObjEmb,        "objemb",    0,
  742.     rtfObjAttr,    rtfObjLink,        "objlink",    0,
  743.     rtfObjAttr,    rtfObjAutoLink,        "objautlink",    0,
  744.     rtfObjAttr,    rtfObjSubscriber,    "objsub",    0,
  745.     rtfObjAttr,    rtfObjPublisher,    "objpub",    0,
  746.     rtfObjAttr,    rtfObjICEmb,        "objicemb",    0,
  747.  
  748.     rtfObjAttr,    rtfObjLinkSelf,        "linkself",    0,
  749.     rtfObjAttr,    rtfObjLock,        "objupdate",    0,
  750.     rtfObjAttr,    rtfObjUpdate,        "objlock",    0,
  751.  
  752.     rtfObjAttr,    rtfObjHt,        "objh",        0,
  753.     rtfObjAttr,    rtfObjWid,        "objw",        0,
  754.     rtfObjAttr,    rtfObjSetSize,        "objsetsize",    0,
  755.     rtfObjAttr,    rtfObjAlign,        "objalign",    0,
  756.     rtfObjAttr,    rtfObjTransposeY,    "objtransy",    0,
  757.     rtfObjAttr,    rtfObjCropTop,        "objcropt",    0,
  758.     rtfObjAttr,    rtfObjCropBottom,    "objcropb",    0,
  759.     rtfObjAttr,    rtfObjCropLeft,        "objcropl",    0,
  760.     rtfObjAttr,    rtfObjCropRight,    "objcropr",    0,
  761.     rtfObjAttr,    rtfObjScaleX,        "objscalex",    0,
  762.     rtfObjAttr,    rtfObjScaleY,        "objscaley",    0,
  763.  
  764.     rtfObjAttr,    rtfObjResRTF,        "rsltrtf",    0,
  765.     rtfObjAttr,    rtfObjResPict,        "rsltpict",    0,
  766.     rtfObjAttr,    rtfObjResBitmap,    "rsltbmp",    0,
  767.     rtfObjAttr,    rtfObjResText,        "rslttxt",    0,
  768.     rtfObjAttr,    rtfObjResMerge,        "rsltmerge",    0,
  769.  
  770.     rtfObjAttr,    rtfObjBookmarkPubObj,    "bkmkpub",    0,
  771.     rtfObjAttr,    rtfObjPubAutoUpdate,    "pubauto",    0,
  772.  
  773.     /*
  774.      * Associated character formatting attributes
  775.      */
  776.  
  777.     rtfACharAttr,    rtfACBold,        "ab",        0,
  778.     rtfACharAttr,    rtfACAllCaps,        "acaps",    0,
  779.     rtfACharAttr,    rtfACForeColor,        "acf",        0,
  780.     rtfACharAttr,    rtfACSubScript,        "adn",        0,
  781.     rtfACharAttr,    rtfACExpand,        "aexpnd",    0,
  782.     rtfACharAttr,    rtfACFontNum,        "af",        0,
  783.     rtfACharAttr,    rtfACFontSize,        "afs",        0,
  784.     rtfACharAttr,    rtfACItalic,        "ai",        0,
  785.     rtfACharAttr,    rtfACLanguage,        "alang",    0,
  786.     rtfACharAttr,    rtfACOutline,        "aoutl",    0,
  787.     rtfACharAttr,    rtfACSmallCaps,        "ascaps",    0,
  788.     rtfACharAttr,    rtfACShadow,        "ashad",    0,
  789.     rtfACharAttr,    rtfACStrikeThru,    "astrike",    0,
  790.     rtfACharAttr,    rtfACUnderline,        "aul",        0,
  791.     rtfACharAttr,    rtfACDotUnderline,    "auld",        0,
  792.     rtfACharAttr,    rtfACDbUnderline,    "auldb",    0,
  793.     rtfACharAttr,    rtfACNoUnderline,    "aulnone",    0,
  794.     rtfACharAttr,    rtfACWordUnderline,    "aulw",        0,
  795.     rtfACharAttr,    rtfACSuperScript,    "aup",        0,
  796.  
  797.     /*
  798.      * Footnote attributes
  799.      */
  800.  
  801.     rtfFNoteAttr,    rtfFNAlt,        "ftnalt",    0,
  802.  
  803.     /*
  804.      * Key code attributes
  805.      */
  806.  
  807.     rtfKeyCodeAttr,    rtfAltKey,        "alt",        0,
  808.     rtfKeyCodeAttr,    rtfShiftKey,        "shift",    0,
  809.     rtfKeyCodeAttr,    rtfControlKey,        "ctrl",        0,
  810.     rtfKeyCodeAttr,    rtfFunctionKey,        "fn",        0,
  811.  
  812.     /*
  813.      * Bookmark attributes
  814.      */
  815.  
  816.     rtfBookmarkAttr, rtfBookmarkFirstCol,    "bkmkcolf",    0,
  817.     rtfBookmarkAttr, rtfBookmarkLastCol,    "bkmkcoll",    0,
  818.  
  819.     /*
  820.      * Index entry attributes
  821.      */
  822.  
  823.     rtfIndexAttr,    rtfIndexNumber,        "xef",        0,
  824.     rtfIndexAttr,    rtfIndexBold,        "bxe",        0,
  825.     rtfIndexAttr,    rtfIndexItalic,        "ixe",        0,
  826.  
  827.     /*
  828.      * Table of contents attributes
  829.      */
  830.  
  831.     rtfTOCAttr,    rtfTOCType,        "tcf",        0,
  832.     rtfTOCAttr,    rtfTOCLevel,        "tcl",        0,
  833.  
  834.     /*
  835.      * Drawing object attributes
  836.      */
  837.  
  838.     rtfDrawAttr,    rtfDrawLock,        "dolock",    0,
  839.     rtfDrawAttr,    rtfDrawPageRelX,    "dobxpage",    0,
  840.     rtfDrawAttr,    rtfDrawColumnRelX,    "dobxcolumn",    0,
  841.     rtfDrawAttr,    rtfDrawMarginRelX,    "dobxmargin",    0,
  842.     rtfDrawAttr,    rtfDrawPageRelY,    "dobypage",    0,
  843.     rtfDrawAttr,    rtfDrawMarginRelY,    "dobymargin",    0,
  844.     rtfDrawAttr,    rtfDrawHeight,        "dodhgt",    0,
  845.  
  846.     rtfDrawAttr,    rtfDrawBeginGroup,    "dpgroup",    0,
  847.     rtfDrawAttr,    rtfDrawGroupCount,    "dpcount",    0,
  848.     rtfDrawAttr,    rtfDrawEndGroup,    "dpendgroup",    0,
  849.     rtfDrawAttr,    rtfDrawArc,        "dparc",    0,
  850.     rtfDrawAttr,    rtfDrawCallout,        "dpcallout",    0,
  851.     rtfDrawAttr,    rtfDrawEllipse,        "dpellipse",    0,
  852.     rtfDrawAttr,    rtfDrawLine,        "dpline",    0,
  853.     rtfDrawAttr,    rtfDrawPolygon,        "dppolygon",    0,
  854.     rtfDrawAttr,    rtfDrawPolyLine,    "dppolyline",    0,
  855.     rtfDrawAttr,    rtfDrawRect,        "dprect",    0,
  856.     rtfDrawAttr,    rtfDrawTextBox,        "dptxbx",    0,
  857.  
  858.     rtfDrawAttr,    rtfDrawOffsetX,        "dpx",        0,
  859.     rtfDrawAttr,    rtfDrawSizeX,        "dpxsize",    0,
  860.     rtfDrawAttr,    rtfDrawOffsetY,        "dpy",        0,
  861.     rtfDrawAttr,    rtfDrawSizeY,        "dpysize",    0,
  862.  
  863.     rtfDrawAttr,    rtfCOAngle,        "dpcoa",    0,
  864.     rtfDrawAttr,    rtfCOAccentBar,        "dpcoaccent",    0,
  865.     rtfDrawAttr,    rtfCOBestFit,        "dpcobestfit",    0,
  866.     rtfDrawAttr,    rtfCOBorder,        "dpcoborder",    0,
  867.     rtfDrawAttr,    rtfCOAttachAbsDist,    "dpcodabs",    0,
  868.     rtfDrawAttr,    rtfCOAttachBottom,    "dpcodbottom",    0,
  869.     rtfDrawAttr,    rtfCOAttachCenter,    "dpcodcenter",    0,
  870.     rtfDrawAttr,    rtfCOAttachTop,        "dpcodtop",    0,
  871.     rtfDrawAttr,    rtfCOLength,        "dpcolength",    0,
  872.     rtfDrawAttr,    rtfCONegXQuadrant,    "dpcominusx",    0,
  873.     rtfDrawAttr,    rtfCONegYQuadrant,    "dpcominusy",    0,
  874.     rtfDrawAttr,    rtfCOOffset,        "dpcooffset",    0,
  875.     rtfDrawAttr,    rtfCOAttachSmart,    "dpcosmarta",    0,
  876.     rtfDrawAttr,    rtfCODoubleLine,    "dpcotdouble",    0,
  877.     rtfDrawAttr,    rtfCORightAngle,    "dpcotright",    0,
  878.     rtfDrawAttr,    rtfCOSingleLine,    "dpcotsingle",    0,
  879.     rtfDrawAttr,    rtfCOTripleLine,    "dpcottriple",    0,
  880.  
  881.     rtfDrawAttr,    rtfDrawTextBoxMargin,    "dptxbxmar",    0,
  882.     rtfDrawAttr,    rtfDrawRoundRect,    "dproundr",    0,
  883.  
  884.     rtfDrawAttr,    rtfDrawPointX,        "dpptx",    0,
  885.     rtfDrawAttr,    rtfDrawPointY,        "dppty",    0,
  886.     rtfDrawAttr,    rtfDrawPolyCount,    "dppolycount",    0,
  887.  
  888.     rtfDrawAttr,    rtfDrawArcFlipX,    "dparcflipx",    0,
  889.     rtfDrawAttr,    rtfDrawArcFlipY,    "dparcflipy",    0,
  890.  
  891.     rtfDrawAttr,    rtfDrawLineBlue,    "dplinecob",    0,
  892.     rtfDrawAttr,    rtfDrawLineGreen,    "dplinecog",    0,
  893.     rtfDrawAttr,    rtfDrawLineRed,        "dplinecor",    0,
  894.     rtfDrawAttr,    rtfDrawLinePalette,    "dplinepal",    0,
  895.     rtfDrawAttr,    rtfDrawLineDashDot,    "dplinedado",    0,
  896.     rtfDrawAttr,    rtfDrawLineDashDotDot,    "dplinedadodo",    0,
  897.     rtfDrawAttr,    rtfDrawLineDash,    "dplinedash",    0,
  898.     rtfDrawAttr,    rtfDrawLineDot,        "dplinedot",    0,
  899.     rtfDrawAttr,    rtfDrawLineGray,    "dplinegray",    0,
  900.     rtfDrawAttr,    rtfDrawLineHollow,    "dplinehollow",    0,
  901.     rtfDrawAttr,    rtfDrawLineSolid,    "dplinesolid",    0,
  902.     rtfDrawAttr,    rtfDrawLineWidth,    "dplinew",    0,
  903.  
  904.     rtfDrawAttr,    rtfDrawHollowEndArrow,    "dpaendhol",    0,
  905.     rtfDrawAttr,    rtfDrawEndArrowLength,    "dpaendl",    0,
  906.     rtfDrawAttr,    rtfDrawSolidEndArrow,    "dpaendsol",    0,
  907.     rtfDrawAttr,    rtfDrawEndArrowWidth,    "dpaendw",    0,
  908.     rtfDrawAttr,    rtfDrawHollowStartArrow,"dpastarthol",    0,
  909.     rtfDrawAttr,    rtfDrawStartArrowLength,"dpastartl",    0,
  910.     rtfDrawAttr,    rtfDrawSolidStartArrow,    "dpastartsol",    0,
  911.     rtfDrawAttr,    rtfDrawStartArrowWidth,    "dpastartw",    0,
  912.  
  913.     rtfDrawAttr,    rtfDrawBgFillBlue,    "dpfillbgcb",    0,
  914.     rtfDrawAttr,    rtfDrawBgFillGreen,    "dpfillbgcg",    0,
  915.     rtfDrawAttr,    rtfDrawBgFillRed,    "dpfillbgcr",    0,
  916.     rtfDrawAttr,    rtfDrawBgFillPalette,    "dpfillbgpal",    0,
  917.     rtfDrawAttr,    rtfDrawBgFillGray,    "dpfillbggray",    0,
  918.     rtfDrawAttr,    rtfDrawFgFillBlue,    "dpfillfgcb",    0,
  919.     rtfDrawAttr,    rtfDrawFgFillGreen,    "dpfillfgcg",    0,
  920.     rtfDrawAttr,    rtfDrawFgFillRed,    "dpfillfgcr",    0,
  921.     rtfDrawAttr,    rtfDrawFgFillPalette,    "dpfillfgpal",    0,
  922.     rtfDrawAttr,    rtfDrawFgFillGray,    "dpfillfggray",    0,
  923.     rtfDrawAttr,    rtfDrawFillPatIndex,    "dpfillpat",    0,
  924.  
  925.     rtfDrawAttr,    rtfDrawShadow,        "dpshadow",    0,
  926.     rtfDrawAttr,    rtfDrawShadowXOffset,    "dpshadx",    0,
  927.     rtfDrawAttr,    rtfDrawShadowYOffset,    "dpshady",    0,
  928.     rtfDrawAttr,    rtfDrawParaRelY,    "dobypara",    0,
  929.  
  930.     rtfVersion,    -1,            "rtf",        0,
  931.     rtfDefFont,    -1,            "deff",        0,
  932. };
  933.  
  934.  
  935. int
  936. main (argc, argv)
  937. int    argc;
  938. char    *argv[];
  939. {
  940. RTFKey    *rp;
  941. int    i, nKeys;
  942. char    *s, c;
  943.  
  944.     if (freopen ("rtf-ctrl", "w", stdout) == (FILE *) NULL)
  945.     {
  946.         fprintf (stderr, "cannot open rtf-ctrl file.\n");
  947.         exit (1);
  948.     }
  949.  
  950.     nKeys = sizeof (rtfKey) / sizeof (RTFKey);
  951.     fprintf (stderr, "number of keys: %d\n", nKeys);
  952.     printf ("# number of control words\n");
  953.     printf ("%d\n", nKeys);
  954.  
  955.     printf ("# control word table\n");
  956.  
  957.     for (i = 0; i < nKeys; i++)
  958.     {
  959.         rp = &rtfKey[i];
  960.         printf ("%d %d \"", rp->major, rp->minor);
  961.         s = rp->str;
  962.         while ((c = *s++) != '\0')
  963.         {
  964.             switch (c)
  965.             {
  966.             default:
  967.                 putchar (c);
  968.                 break;
  969.             case '\n':
  970.                 printf ("\\n");
  971.                 break;
  972.             case '\r':
  973.                 printf ("\\r");
  974.                 break;
  975.             case '"':
  976.                 printf ("\\%c", c);
  977.                 break;
  978.             }
  979.         }
  980.         printf ("\"\n");
  981.     }
  982.     exit (0);
  983. }
  984.